package JDKtest.java_lang_test.List;


/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
public class Solution {

    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        /**
         * Definition for singly-linked list.
         * public class ListNode {
         *     int val;
         *     ListNode next;
         *     ListNode() {}
         *     ListNode(int val) { this.val = val; }
         *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
         * }
         */

// 预设指针

                ListNode pre = new ListNode(0);
                ListNode cur = pre;
                int carry = 0;
                while(l1 != null || l2 != null) {
                    int x = l1 == null ? 0 : l1.val;
                    int y = l2 == null ? 0 : l2.val;
                    int sum = x + y + carry;

                    carry = sum / 10;
                    sum = sum % 10;
                    cur.next = new ListNode(sum);

                    cur = cur.next;
                    if(l1 != null)
                        l1 = l1.next;
                    if(l2 != null)
                        l2 = l2.next;
                }
                if(carry == 1) {
                    cur.next = new ListNode(carry);
                }
                return pre.next;

// 作者：画手大鹏
// 链接：https://leetcode.cn/problems/add-two-numbers/solutions/7348/hua-jie-suan-fa-2-liang-shu-xiang-jia-by-guanpengc/
// 来源：力扣（LeetCode）
// 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

            }
        }

        // 可笑愚蠢的转化法


//
//
//        int int_result=Integer.parseInt(NodeToString(reverseList(l1)))+ Integer.parseInt(NodeToString(reverseList(l2)));
//
//        return result;
//
//
//
//    }
//
//
//    public static ListNode reverseList(ListNode head) {
//        if(head == null || head.next == null){
//            return head;
//        }
//        ListNode pre = null;
//        ListNode cur = head;
//        while(cur != null){
//            ListNode next = cur.next;
//            cur.next = pre;
//            pre = cur;
//            cur = next;
//        }
//
//        return pre;
//
//    }
//
//
//    public static String NodeToString(ListNode head) {
//        StringBuilder sb = new StringBuilder();
//        ListNode current = head;
//
//        while (current != null) {
//            sb.append(current.val);
//            if (current.next != null) {
//                sb.append("");
//            }
//            current = current.next;
//        }
//
//
//        public static String StringToNode() {
//
//
//        return sb.toString();
//    }
